package 剑指offer.zw_03_数组中重复的数字;

import java.util.HashMap;
import java.util.HashSet;

class Solution {
    public static void main(String[] args) {
        int[] nums = {2, 3, 1, 0, 2, 5, 3};
        int number = findRepeatNumber(nums);
        System.out.println(number);
    }


    public static int findRepeatNumber(int[] nums) {
        int i = 0;
        while (i < nums.length) {
            if (nums[i] == i) {
                i++;
                continue;
            }
            if (nums[nums[i]] == nums[i]) return nums[i];
            int tmp = nums[i];
            nums[i] = nums[tmp];
            nums[tmp] = tmp;
        }
        return -1;
    }


//    public static int findRepeatNumber(int[] nums) {
//        HashSet<Integer> set = new HashSet<>();
//        for (int num : nums) {
//            if (set.contains(num)) return num;
//            set.add(num);
//        }
//        return 0;
//    }


//    public static int findRepeatNumber(int[] nums) {
//        HashMap<Integer, Integer> map = new HashMap<>();
//        for (int num : nums) {
//            map.put(num, map.getOrDefault(num, 0) + 1);
//            if (map.get(num)>=2) return num;
//        }
//        return 0;
//    }
}